// 首页模块的 Vuex Store
const state = {
  // 用户信息
  userInfo: {
    username: '张三',
    avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
    role: 'student',
    level: '高中二年级'
  },
  
  // 消息
  messages: {
    notifications: [
      {
        id: 1,
        title: '课程更新通知',
        content: '您关注的《高中数学必修三》课程已更新最新章节，点击查看。',
        time: '2023-06-15 10:30',
        read: false
      },
      {
        id: 2,
        title: '学习提醒',
        content: '您已有3天未完成《物理力学》的学习任务，请及时学习。',
        time: '2023-06-14 09:15',
        read: true
      }
    ],
    system: [
      {
        id: 1,
        title: '系统维护通知',
        content: '系统将于2023年6月20日凌晨2:00-4:00进行例行维护，届时部分功能可能暂时无法使用。',
        time: '2023-06-13 18:00',
        read: false
      }
    ]
  },
  
  // 搜索历史
  searchHistory: ['高中数学', '牛顿力学', '化学方程式配平'],
  
  // 学科分类
  subjectCategories: [
    {
      id: 1,
      name: '数学',
      icon: 'DataAnalysis',
      image: 'https://picsum.photos/id/301/300/200',
      children: [
        {
          id: 101,
          name: '初中数学',
          children: [
            { id: 10101, name: '初一数学' },
            { id: 10102, name: '初二数学' },
            { id: 10103, name: '初三数学' },
            { id: 10104, name: '中考数学' }
          ]
        },
        {
          id: 102,
          name: '高中数学',
          children: [
            { id: 10201, name: '高一数学' },
            { id: 10202, name: '高二数学' },
            { id: 10203, name: '高三数学' },
            { id: 10204, name: '高考数学' }
          ]
        },
        {
          id: 103,
          name: '大学数学',
          children: [
            { id: 10301, name: '高等数学' },
            { id: 10302, name: '线性代数' },
            { id: 10303, name: '概率统计' },
            { id: 10304, name: '离散数学' }
          ]
        }
      ]
    },
    {
      id: 2,
      name: '物理',
      icon: 'Histogram',
      image: 'https://picsum.photos/id/302/300/200',
      children: [
        {
          id: 201,
          name: '初中物理',
          children: [
            { id: 20101, name: '初二物理' },
            { id: 20102, name: '初三物理' },
            { id: 20103, name: '中考物理' }
          ]
        },
        {
          id: 202,
          name: '高中物理',
          children: [
            { id: 20201, name: '高一物理' },
            { id: 20202, name: '高二物理' },
            { id: 20203, name: '高三物理' },
            { id: 20204, name: '高考物理' }
          ]
        },
        {
          id: 203,
          name: '大学物理',
          children: [
            { id: 20301, name: '大学物理' },
            { id: 20302, name: '电磁学' },
            { id: 20303, name: '热学' },
            { id: 20304, name: '光学' }
          ]
        }
      ]
    },
    {
      id: 3,
      name: '化学',
      icon: 'Monitor',
      image: 'https://picsum.photos/id/303/300/200',
      children: [
        {
          id: 301,
          name: '初中化学',
          children: [
            { id: 30101, name: '初三化学' },
            { id: 30102, name: '中考化学' }
          ]
        },
        {
          id: 302,
          name: '高中化学',
          children: [
            { id: 30201, name: '高一化学' },
            { id: 30202, name: '高二化学' },
            { id: 30203, name: '高三化学' },
            { id: 30204, name: '高考化学' }
          ]
        },
        {
          id: 303,
          name: '大学化学',
          children: [
            { id: 30301, name: '无机化学' },
            { id: 30302, name: '有机化学' },
            { id: 30303, name: '分析化学' },
            { id: 30304, name: '物理化学' }
          ]
        }
      ]
    },
    {
      id: 4,
      name: '生物',
      icon: 'Opportunity',
      image: 'https://picsum.photos/id/304/300/200',
      children: [
        {
          id: 401,
          name: '初中生物',
          children: [
            { id: 40101, name: '初一生物' },
            { id: 40102, name: '初二生物' },
            { id: 40103, name: '初三生物' },
            { id: 40104, name: '中考生物' }
          ]
        },
        {
          id: 402,
          name: '高中生物',
          children: [
            { id: 40201, name: '高一生物' },
            { id: 40202, name: '高二生物' },
            { id: 40203, name: '高三生物' },
            { id: 40204, name: '高考生物' }
          ]
        },
        {
          id: 403,
          name: '大学生物',
          children: [
            { id: 40301, name: '普通生物学' },
            { id: 40302, name: '分子生物学' },
            { id: 40303, name: '细胞生物学' },
            { id: 40304, name: '遗传学' }
          ]
        }
      ]
    },
    {
      id: 5,
      name: '英语',
      icon: 'Reading',
      image: 'https://picsum.photos/id/305/300/200',
      children: [
        {
          id: 501,
          name: '初中英语',
          children: [
            { id: 50101, name: '初一英语' },
            { id: 50102, name: '初二英语' },
            { id: 50103, name: '初三英语' },
            { id: 50104, name: '中考英语' }
          ]
        },
        {
          id: 502,
          name: '高中英语',
          children: [
            { id: 50201, name: '高一英语' },
            { id: 50202, name: '高二英语' },
            { id: 50203, name: '高三英语' },
            { id: 50204, name: '高考英语' }
          ]
        },
        {
          id: 503,
          name: '大学英语',
          children: [
            { id: 50301, name: '大学英语四级' },
            { id: 50302, name: '大学英语六级' },
            { id: 50303, name: '专业英语' },
            { id: 50304, name: '商务英语' }
          ]
        }
      ]
    },
    {
      id: 6,
      name: '语文',
      icon: 'Brush',
      image: 'https://picsum.photos/id/306/300/200',
      children: [
        {
          id: 601,
          name: '初中语文',
          children: [
            { id: 60101, name: '初一语文' },
            { id: 60102, name: '初二语文' },
            { id: 60103, name: '初三语文' },
            { id: 60104, name: '中考语文' }
          ]
        },
        {
          id: 602,
          name: '高中语文',
          children: [
            { id: 60201, name: '高一语文' },
            { id: 60202, name: '高二语文' },
            { id: 60203, name: '高三语文' },
            { id: 60204, name: '高考语文' }
          ]
        },
        {
          id: 603,
          name: '大学语文',
          children: [
            { id: 60301, name: '大学语文' },
            { id: 60302, name: '古代文学' },
            { id: 60303, name: '现代文学' },
            { id: 60304, name: '写作与修辞' }
          ]
        }
      ]
    },
    {
      id: 7,
      name: '历史',
      icon: 'Compass',
      image: 'https://picsum.photos/id/307/300/200',
      children: [
        {
          id: 701,
          name: '初中历史',
          children: [
            { id: 70101, name: '初一历史' },
            { id: 70102, name: '初二历史' },
            { id: 70103, name: '初三历史' },
            { id: 70104, name: '中考历史' }
          ]
        },
        {
          id: 702,
          name: '高中历史',
          children: [
            { id: 70201, name: '高一历史' },
            { id: 70202, name: '高二历史' },
            { id: 70203, name: '高三历史' },
            { id: 70204, name: '高考历史' }
          ]
        },
        {
          id: 703,
          name: '专业历史',
          children: [
            { id: 70301, name: '中国古代史' },
            { id: 70302, name: '中国近现代史' },
            { id: 70303, name: '世界古代史' },
            { id: 70304, name: '世界近现代史' }
          ]
        }
      ]
    },
    {
      id: 8,
      name: '体育',
      icon: 'Football',
      image: 'https://picsum.photos/id/308/300/200',
      children: [
        {
          id: 801,
          name: '球类运动',
          children: [
            { id: 80101, name: '篮球' },
            { id: 80102, name: '足球' },
            { id: 80103, name: '排球' },
            { id: 80104, name: '乒乓球' }
          ]
        },
        {
          id: 802,
          name: '田径运动',
          children: [
            { id: 80201, name: '短跑' },
            { id: 80202, name: '长跑' },
            { id: 80203, name: '跳高' },
            { id: 80204, name: '跳远' }
          ]
        },
        {
          id: 803,
          name: '体育理论',
          children: [
            { id: 80301, name: '体育保健' },
            { id: 80302, name: '运动生理学' },
            { id: 80303, name: '体育心理学' },
            { id: 80304, name: '体育教学法' }
          ]
        }
      ]
    }
  ],
  
  // 轮播图
  banners: [
    {
      id: 1,
      title: '高考冲刺课程',
      description: '名师一对一辅导，助你高考成功',
      image: 'https://img-blog.csdnimg.cn/img_convert/9f3e2b3c0d9e440b9a4c1d5d3f8b4ae9.png',
      buttonText: '立即报名',
      link: '/course/special/gaokao'
    },
    {
      id: 2,
      title: 'AI智能学习助手',
      description: '基于大语言模型的智能问答系统，解决你的学习难题',
      image: 'https://img-blog.csdnimg.cn/img_convert/b1c7d4e8a7f94a2b8a3e1d5f3c8b4a9e.png',
      buttonText: '免费体验',
      link: '/ai-assistant'
    },
    {
      id: 3,
      title: '中考备考专题',
      description: '系统化复习方案，全面提升成绩',
      image: 'https://img-blog.csdnimg.cn/img_convert/c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7.png',
      buttonText: '查看详情',
      link: '/course/special/zhongkao'
    }
  ],
  
  // 上次学习进度
  learningProgress: {
    video: {
      id: 1,
      title: '高中物理 - 力学基础',
      description: '牛顿运动定律与万有引力',
      thumbnail: 'https://img-blog.csdnimg.cn/img_convert/d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9.png',
      progress: 65,
      remainingTime: '25分钟'
    },
    exercise: {
      id: 2,
      title: '高中数学 - 函数与导数',
      description: '导数应用练习题',
      completed: 15,
      total: 30,
      accuracy: 85
    },
    qa: {
      id: 3,
      title: '化学方程式配平问题',
      description: '关于氧化还原反应的方程式配平',
      time: '2023-06-12 15:30'
    }
  },
  
  // 常用功能
  commonFeatures: [
    {
      id: 1,
      title: 'AI智能问答',
      description: '利用人工智能解答学习中的各种疑问',
      icon: 'ChatLineRound',
      bgColor: '#1e88e5',
      link: '/chat'
    },
    {
      id: 2,
      title: '题库练习',
      description: '海量题库，针对性训练，提高解题能力',
      icon: 'QuestionFilled',
      bgColor: '#f56c6c',
      link: '/exercises'
    },
    {
      id: 3,
      title: '学习分析',
      description: '智能分析学习数据，找出知识薄弱点',
      icon: 'DataAnalysis',
      bgColor: '#67c23a',
      link: '/analysis'
    },
    {
      id: 4,
      title: '学习计划',
      description: '制定个性化学习计划，科学规划学习时间',
      icon: 'Calendar',
      bgColor: '#e6a23c',
      link: '/plan'
    },
    {
      id: 5,
      title: '错题本',
      description: '自动收集错题，针对性复习',
      icon: 'Document',
      bgColor: '#9c27b0',
      link: '/mistakes'
    },
    {
      id: 6,
      title: '资料库',
      description: '海量学习资料，涵盖各学科知识点',
      icon: 'Collection',
      bgColor: '#795548',
      link: '/resources'
    },
    {
      id: 7,
      title: '笔记本',
      description: '智能笔记，支持多媒体内容',
      icon: 'Notebook',
      bgColor: '#607d8b',
      link: '/notes'
    },
    {
      id: 8,
      title: '学习记录',
      description: '记录学习时间和进度，培养学习习惯',
      icon: 'Timer',
      bgColor: '#ff9800',
      link: '/records'
    }
  ],
  
  // 推荐课程
  recommendedCourses: {
    personalized: [
      {
        id: 1,
        title: '高中数学必修三 - 概率与统计',
        description: '本课程系统讲解高中数学必修三中的概率与统计部分，包含大量例题和习题。',
        image: 'https://picsum.photos/id/401/300/180',
        tag: '推荐',
        rating: 4.9,
        students: 1245,
        price: '¥99'
      },
      {
        id: 2,
        title: '高中物理 - 力学专题',
        description: '本课程深入讲解高中物理力学部分的重点难点，帮助学生建立物理思维。',
        image: 'https://picsum.photos/id/402/300/180',
        rating: 4.8,
        students: 987,
        price: '¥129'
      },
      {
        id: 3,
        title: '高中化学 - 有机化学入门',
        description: '本课程系统讲解高中有机化学知识，包含实验演示和大量例题。',
        image: 'https://picsum.photos/id/403/300/180',
        tag: '热门',
        rating: 4.7,
        students: 756,
        price: '¥89'
      },
      {
        id: 4,
        title: '高考英语 - 阅读理解技巧',
        description: '本课程讲解高考英语阅读理解的解题技巧和方法，提高阅读速度和准确率。',
        image: 'https://picsum.photos/id/404/300/180',
        rating: 4.9,
        students: 1532,
        price: '¥119'
      }
    ],
    popular: [
      {
        id: 5,
        title: '初中数学 - 几何专题',
        description: '本课程系统讲解初中几何知识，培养几何直观和空间想象能力。',
        image: 'https://picsum.photos/id/405/300/180',
        tag: '热门',
        rating: 4.8,
        students: 2156,
        price: '¥69'
      },
      {
        id: 6,
        title: '高中生物 - 遗传与进化',
        description: '本课程深入讲解高中生物遗传与进化部分，包含大量例题和实验。',
        image: 'https://picsum.photos/id/406/300/180',
        rating: 4.7,
        students: 1089,
        price: '¥79'
      },
      {
        id: 7,
        title: '高中语文 - 文言文精讲',
        description: '本课程精讲高中语文必背文言文，包含详细翻译和重点字词讲解。',
        image: 'https://picsum.photos/id/407/300/180',
        tag: '精品',
        rating: 4.9,
        students: 1876,
        price: '¥109'
      },
      {
        id: 8,
        title: '初中英语 - 语法精讲',
        description: '本课程系统讲解初中英语语法知识，帮助学生掌握英语基础。',
        image: 'https://picsum.photos/id/408/300/180',
        rating: 4.6,
        students: 2103,
        price: '免费'
      }
    ]
  },
  
  // 全部课程
  allCourses: [
    {
      id: 1,
      title: '高中数学必修三 - 概率与统计',
      description: '本课程系统讲解高中数学必修三中的概率与统计部分，包含大量例题和习题。',
      image: 'https://picsum.photos/id/401/300/180',
      tag: '推荐',
      rating: 4.9,
      students: 1245,
      price: '¥99',
      subject: 'math',
      level: 'intermediate',
      teacher: {
        name: '李明',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    },
    {
      id: 2,
      title: '高中物理 - 力学专题',
      description: '本课程深入讲解高中物理力学部分的重点难点，帮助学生建立物理思维。',
      image: 'https://picsum.photos/id/402/300/180',
      rating: 4.8,
      students: 987,
      price: '¥129',
      subject: 'physics',
      level: 'intermediate',
      teacher: {
        name: '王刚',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    },
    {
      id: 3,
      title: '高中化学 - 元素化学',
      description: '系统讲解元素周期表及主要元素的性质、化合物和反应，帮助学生构建元素化学知识体系。',
      image: 'https://img-blog.csdnimg.cn/img_convert/o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0.png',
      subject: 'chemistry',
      level: 'intermediate',
      students: 980,
      rating: 4.6,
      price: '¥79',
      teacher: {
        name: '张华',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    },
    {
      id: 4,
      title: '高中生物 - 分子与细胞',
      description: '从分子水平到细胞结构与功能，全面讲解高中生物学基础知识，配合显微观察实验视频。',
      image: 'https://img-blog.csdnimg.cn/img_convert/p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1.png',
      subject: 'biology',
      level: 'elementary',
      students: 860,
      rating: 4.5,
      price: '¥79',
      teacher: {
        name: '刘芳',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    },
    {
      id: 5,
      title: '高中英语 - 阅读理解技巧',
      description: '系统讲解高中英语阅读理解的解题技巧和方法，提高阅读速度和理解能力。',
      image: 'https://img-blog.csdnimg.cn/img_convert/q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2.png',
      subject: 'english',
      level: 'advanced',
      students: 1420,
      rating: 4.8,
      price: '¥89',
      teacher: {
        name: '陈静',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    },
    {
      id: 6,
      title: '计算机编程入门 - Python',
      description: '零基础入门Python编程，通过趣味项目学习编程思维和基本语法，适合高中生学习。',
      image: 'https://img-blog.csdnimg.cn/img_convert/r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2g3.png',
      subject: 'computer',
      level: 'beginner',
      students: 2150,
      rating: 4.9,
      price: '免费',
      teacher: {
        name: '赵明',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    },
    {
      id: 7,
      title: '高中数学 - 概率与统计',
      description: '全面讲解概率论与数理统计的基本概念和方法，结合实际案例帮助理解和应用。',
      image: 'https://img-blog.csdnimg.cn/img_convert/s9t0u1v2w3x4y5z6a7b8c9d0e1f2g3h4.png',
      subject: 'math',
      level: 'advanced',
      students: 980,
      rating: 4.7,
      price: '¥99',
      teacher: {
        name: '李明',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    },
    {
      id: 8,
      title: '高中物理 - 电磁学',
      description: '系统讲解电场、磁场与电磁感应等知识，通过丰富的实验和习题加深理解。',
      image: 'https://img-blog.csdnimg.cn/img_convert/t0u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5.png',
      subject: 'physics',
      level: 'intermediate',
      students: 1050,
      rating: 4.6,
      price: '¥89',
      teacher: {
        name: '王强',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    },
    {
      id: 9,
      title: '高中化学 - 有机化学',
      description: '全面讲解有机化学基础知识，包括烃类化合物及其衍生物的结构、性质和反应。',
      image: 'https://img-blog.csdnimg.cn/img_convert/u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6.png',
      subject: 'chemistry',
      level: 'advanced',
      students: 890,
      rating: 4.5,
      price: '¥79',
      teacher: {
        name: '张华',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    },
    {
      id: 10,
      title: '高中生物 - 遗传与进化',
      description: '系统讲解遗传学基本规律和进化论，结合经典案例和最新研究成果。',
      image: 'https://img-blog.csdnimg.cn/img_convert/v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7.png',
      subject: 'biology',
      level: 'advanced',
      students: 780,
      rating: 4.7,
      price: '¥79',
      teacher: {
        name: '刘芳',
        avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'
      }
    }
  ],
  
  // 学习计划
  learningPlans: []
};

const mutations = {
  // 更新用户信息
  UPDATE_USER_INFO(state, userInfo) {
    state.userInfo = userInfo;
  },
  
  // 标记消息为已读
  MARK_MESSAGE_READ(state, { type, id }) {
    const message = state.messages[type].find(msg => msg.id === id);
    if (message) {
      message.read = true;
    }
  },
  
  // 添加搜索历史
  ADD_SEARCH_HISTORY(state, keyword) {
    if (!state.searchHistory.includes(keyword)) {
      state.searchHistory.unshift(keyword);
      // 保留最近10条搜索记录
      if (state.searchHistory.length > 10) {
        state.searchHistory.pop();
      }
    }
  },
  
  // 清空搜索历史
  CLEAR_SEARCH_HISTORY(state) {
    state.searchHistory = [];
  },
  
  // 添加学习计划
  ADD_LEARNING_PLAN(state, plan) {
    state.learningPlans.push(plan);
  },
  
  // 设置学习计划列表
  SET_LEARNING_PLANS(state, plans) {
    state.learningPlans = plans;
  },
  
  // 删除学习计划
  REMOVE_LEARNING_PLAN(state, planId) {
    state.learningPlans = state.learningPlans.filter(plan => plan.id !== planId);
  },
  
  // 添加任务到学习计划
  ADD_TASK_TO_PLAN(state, { planId, task }) {
    const plan = state.learningPlans.find(p => p.id === planId);
    if (plan) {
      if (!plan.tasks) {
        plan.tasks = [];
      }
      plan.tasks.push(task);
    }
  },
  
  // 更新任务状态
  UPDATE_TASK_STATUS(state, { planId, taskId, completed }) {
    const plan = state.learningPlans.find(p => p.id === planId);
    if (plan && plan.tasks) {
      const task = plan.tasks.find(t => t.id === taskId);
      if (task) {
        task.completed = completed;
      }
    }
  },
  
  // 删除任务
  DELETE_TASK(state, { planId, taskId }) {
    const plan = state.learningPlans.find(p => p.id === planId);
    if (plan && plan.tasks) {
      plan.tasks = plan.tasks.filter(task => task.id !== taskId);
    }
  }
};

const actions = {
  // 初始化首页数据
  initHomeData({ commit }) {
    // 这里可以发送请求获取首页数据
    // 模拟数据已经在state中定义，实际项目中可以从API获取
    console.log('初始化首页数据');
  },
  
  // 更新用户信息
  updateUserInfo({ commit }, userInfo) {
    commit('UPDATE_USER_INFO', userInfo);
  },
  
  // 标记消息为已读
  markMessageRead({ commit }, payload) {
    commit('MARK_MESSAGE_READ', payload);
  },
  
  // 添加搜索历史
  addSearchHistory({ commit }, keyword) {
    commit('ADD_SEARCH_HISTORY', keyword);
  },
  
  // 清空搜索历史
  clearSearchHistory({ commit }) {
    commit('CLEAR_SEARCH_HISTORY');
  },
  
  // 添加学习计划
  addLearningPlan({ commit }, plan) {
    return new Promise((resolve, reject) => {
      // 这里可以添加与后端 API 的交互
      // 例如：发送 HTTP 请求保存学习计划
      
      // 暂时使用本地存储模拟
      try {
        // 获取现有计划
        const existingPlans = JSON.parse(localStorage.getItem('learningPlans') || '[]');
        
        // 添加新计划（带唯一 ID）
        const newPlan = {
          ...plan,
          id: Date.now().toString(),
          createdAt: new Date().toISOString()
        };
        
        existingPlans.push(newPlan);
        
        // 保存到本地存储
        localStorage.setItem('learningPlans', JSON.stringify(existingPlans));
        
        // 更新 Vuex state
        commit('ADD_LEARNING_PLAN', newPlan);
        
        resolve(newPlan);
      } catch (error) {
        console.error('添加学习计划失败:', error);
        reject(error);
      }
    });
  },
  
  // 获取学习计划列表
  getLearningPlans({ commit }) {
    return new Promise((resolve, reject) => {
      try {
        // 从本地存储获取计划
        const plans = JSON.parse(localStorage.getItem('learningPlans') || '[]');
        
        // 更新 Vuex state
        commit('SET_LEARNING_PLANS', plans);
        
        resolve(plans);
      } catch (error) {
        console.error('获取学习计划失败:', error);
        reject(error);
      }
    });
  },
  
  // 删除学习计划
  deleteLearningPlan({ commit }, planId) {
    return new Promise((resolve, reject) => {
      try {
        // 获取现有计划
        const existingPlans = JSON.parse(localStorage.getItem('learningPlans') || '[]');
        
        // 过滤掉要删除的计划
        const updatedPlans = existingPlans.filter(plan => plan.id !== planId);
        
        // 保存到本地存储
        localStorage.setItem('learningPlans', JSON.stringify(updatedPlans));
        
        // 更新 Vuex state
        commit('REMOVE_LEARNING_PLAN', planId);
        
        resolve();
      } catch (error) {
        console.error('删除学习计划失败:', error);
        reject(error);
      }
    });
  },
  
  // 添加任务到学习计划
  addTaskToPlan({ commit, state }, { planId, task }) {
    return new Promise((resolve, reject) => {
      try {
        // 获取现有计划
        const existingPlans = JSON.parse(localStorage.getItem('learningPlans') || '[]');
        
        // 找到要添加任务的计划
        const planIndex = existingPlans.findIndex(plan => plan.id === planId);
        
        if (planIndex === -1) {
          throw new Error('计划不存在');
        }
        
        // 如果计划没有 tasks 数组，创建一个
        if (!existingPlans[planIndex].tasks) {
          existingPlans[planIndex].tasks = [];
        }
        
        // 添加新任务（带唯一 ID）
        const newTask = {
          ...task,
          id: Date.now().toString(),
          createdAt: new Date().toISOString(),
          completed: false
        };
        
        existingPlans[planIndex].tasks.push(newTask);
        
        // 保存到本地存储
        localStorage.setItem('learningPlans', JSON.stringify(existingPlans));
        
        // 更新 Vuex state
        commit('ADD_TASK_TO_PLAN', { planId, task: newTask });
        
        resolve(newTask);
      } catch (error) {
        console.error('添加任务失败:', error);
        reject(error);
      }
    });
  },
  
  // 更新任务状态
  updateTaskStatus({ commit, state }, { planId, taskId, completed }) {
    return new Promise((resolve, reject) => {
      try {
        // 获取现有计划
        const existingPlans = JSON.parse(localStorage.getItem('learningPlans') || '[]');
        
        // 找到要更新任务的计划
        const planIndex = existingPlans.findIndex(plan => plan.id === planId);
        
        if (planIndex === -1) {
          throw new Error('计划不存在');
        }
        
        // 找到要更新的任务
        const plan = existingPlans[planIndex];
        if (!plan.tasks) {
          throw new Error('计划没有任务');
        }
        
        const taskIndex = plan.tasks.findIndex(task => task.id === taskId);
        if (taskIndex === -1) {
          throw new Error('任务不存在');
        }
        
        // 更新任务状态
        plan.tasks[taskIndex].completed = completed;
        
        // 保存到本地存储
        localStorage.setItem('learningPlans', JSON.stringify(existingPlans));
        
        // 更新 Vuex state
        commit('UPDATE_TASK_STATUS', { planId, taskId, completed });
        
        resolve();
      } catch (error) {
        console.error('更新任务状态失败:', error);
        reject(error);
      }
    });
  },
  
  // 删除任务
  deleteTask({ commit, state }, { planId, taskId }) {
    return new Promise((resolve, reject) => {
      try {
        // 获取现有计划
        const existingPlans = JSON.parse(localStorage.getItem('learningPlans') || '[]');
        
        // 找到要删除任务的计划
        const planIndex = existingPlans.findIndex(plan => plan.id === planId);
        
        if (planIndex === -1) {
          throw new Error('计划不存在');
        }
        
        // 找到要删除的任务
        const plan = existingPlans[planIndex];
        if (!plan.tasks) {
          throw new Error('计划没有任务');
        }
        
        // 过滤掉要删除的任务
        plan.tasks = plan.tasks.filter(task => task.id !== taskId);
        
        // 保存到本地存储
        localStorage.setItem('learningPlans', JSON.stringify(existingPlans));
        
        // 更新 Vuex state
        commit('DELETE_TASK', { planId, taskId });
        
        resolve();
      } catch (error) {
        console.error('删除任务失败:', error);
        reject(error);
      }
    });
  }
};

const getters = {
  // 获取未读消息数量
  unreadMessagesCount: state => {
    let count = 0;
    for (const type in state.messages) {
      count += state.messages[type].filter(msg => !msg.read).length;
    }
    return count;
  },
  
  // 获取上次学习的视频
  lastVideo: state => state.learningProgress.video,
  
  // 获取上次的练习
  lastExercise: state => state.learningProgress.exercise,
  
  // 获取上次的问答记录
  lastQA: state => state.learningProgress.qa
};

export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}; 